/**
 * 利用递归将数组转换为树结构
 * @param {*} arr
 * @param {*} id
 * @param {*} link
 * @returns
 */
function arrayToTree(arr, id = null, link = 'parentId') {
  return arr
    .filter(item => item[link] === id)
    .map(item => ({
      ...item,
      children: arrayToTree(arr, item.id, link)
    }))
}

const data = [
  { id: 1, name: 'NODE A', parentId: null },
  { id: 2, name: 'NODE B', parentId: 1 },
  { id: 3, name: 'NODE C', parentId: 1 },
  { id: 4, name: 'NODE D', parentId: 2 },
  { id: 5, name: 'NODE E', parentId: 2 },
  { id: 6, name: 'NODE F', parentId: 3 }
]

console.log(arrayToTree(data))
